package com.znsb.msfq.utils;

import android.text.TextUtils;

import com.znsb.msfq.app.ZnsbApp;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;

/**
 * @name： 孙科技
 * @phone： 13308334117
 * @createTime： 2017/2/15
 * @modifyTime： 2017/2/15
 * @explain：
 */
public class ValidateUtils {
    /**
     * 注册时验证
     *
     * @param phone
     * @param code
     * @param pwd
     * @param agPwd
     * @param isChecked
     * @return
     */
    public static boolean isRegister(String phone, String code, String pwd, String agPwd, boolean isChecked) {
        if (!isMobile(phone)) {
            return false;
        }
        if (isNullOrEmpty(code)) {
            ToastUtils.TextToast(ZnsbApp.mContext, "验证码不可为空！", 2000);
            return false;
        }
        if (TextUtils.isEmpty(pwd)) {
            ToastUtils.TextToast(ZnsbApp.mContext, "密码不可为空！", 2000);
            return false;
        }
        if (TextUtils.isEmpty(agPwd) || !agPwd.equals(pwd)) {
            ToastUtils.TextToast(ZnsbApp.mContext, "两次密码输入要一样！", 2000);
            return false;
        }
        if (!isChecked) {
            ToastUtils.TextToast(ZnsbApp.mContext, "请同意协议！", 2000);
            return false;
        }
        return true;
    }

    /**
     * 登录验证
     *
     * @param phone
     * @param code
     * @param pwd
     * @param isChecked
     * @return
     */
    public static boolean isLogin(String phone, String code, String pwd, boolean isChecked) {
        if (!isMobile(phone)) {
            return false;
        }
        if (code != null && isNullOrEmpty(code)) {
            ToastUtils.TextToast(ZnsbApp.mContext, "验证码不可为空！", 2000);
            return false;
        }
        if (pwd != null && TextUtils.isEmpty(pwd)) {
            ToastUtils.TextToast(ZnsbApp.mContext, "密码不可为空！", 2000);
            return false;
        }
        if (!isChecked) {
            ToastUtils.TextToast(ZnsbApp.mContext, "请同意协议！", 2000);
            return false;
        }
        return true;
    }

    /**
     * 忘记密码验证
     *
     * @param phone
     * @param code
     * @param pwd
     * @param agPwd
     * @return
     */
    public static boolean isForgetPwd(String phone, String code, String pwd, String agPwd) {
        if (!isMobile(phone)) {
            return false;
        }
        if (isNullOrEmpty(code)) {
            ToastUtils.TextToast(ZnsbApp.mContext, "验证码不可为空！", 2000);
            return false;
        }
        if (TextUtils.isEmpty(pwd)) {
            ToastUtils.TextToast(ZnsbApp.mContext, "密码不可为空！", 2000);
            return false;
        }
        if (TextUtils.isEmpty(agPwd) || !agPwd.equals(pwd)) {
            ToastUtils.TextToast(ZnsbApp.mContext, "两次密码输入要一样！", 2000);
            return false;
        }
        return true;
    }

    /**
     * 重置密码验证
     *
     * @param pwd
     * @param newPwd
     * @param newAgPwd
     * @return
     */
    public static boolean isUpdtePwd(String pwd, String newPwd, String newAgPwd) {
        if (isNullOrEmpty(pwd)) {
            ToastUtils.TextToast(ZnsbApp.mContext, "原密码不可为空！", 2000);
            return false;
        }
        if (TextUtils.isEmpty(newPwd)) {
            ToastUtils.TextToast(ZnsbApp.mContext, "新密码不可为空！", 2000);
            return false;
        }
        if (TextUtils.isEmpty(newAgPwd) || !newAgPwd.equals(newPwd)) {
            ToastUtils.TextToast(ZnsbApp.mContext, "两次密码输入要一样！", 2000);
            return false;
        }
        return true;
    }

    /**
     * 判断手机号是否符合
     *
     * @param phone
     * @return
     */
    public static boolean isMobile(String phone) {
        if (TextUtils.isEmpty(phone) || phone.length() != 11) {
            ToastUtils.TextToast(ZnsbApp.mContext, "手机号不正确！", 2000);
            return false;
        }
        return true;
    }

    public static String getShowHint(String str, int start, int end) {
        if (isNullOrEmpty(str.trim()))
            return "";
        if (str.length() < end)
            return "";
        String x = "";
        for (int i = 0; i < (end - start); i++) {
            x = "*" + x;
        }
        String result = str.replace(str.substring(start, end), x);
        return result;
    }

    public static void main(String[] arg) {
    }

    /**
     * 判断对象或对象数组中每一个对象是否为空: 对象为null，字符序列长度为0，集合类、Map为empty
     *
     * @param obj
     * @return
     */
    public static boolean isNullOrEmpty(Object obj) {
        if (obj == null)
            return true;
        if (obj instanceof CharSequence)
            return ((CharSequence) obj).length() == 0;
        if (obj instanceof Collection)
            return ((Collection) obj).isEmpty();
        if (obj instanceof Map)
            return ((Map) obj).isEmpty();
        if (obj instanceof Object[]) {
            Object[] object = (Object[]) obj;
            if (object.length == 0)
                return true;
            boolean empty = true;
            for (int i = 0; i < object.length; i++) {
                if (!isNullOrEmpty(object[i])) {
                    empty = false;
                    break;
                }
            }
            return empty;
        }
        return false;
    }
}
